package com.such.kit.io.support;

import java.util.Map;
import com.such.kit.io.source.DatabaseIOSource;

/**
 * @author SUCH
 * <pre>
 * 为 {@link DatabaseIOSource} 服务的动态 sql 语句供应器，用于处理动态、复杂的 sql 语句需求
 * 
 * [警告] 由于 {@link DatabaseIOSource} 的实现特性，返回的 sql 语句需要使用字段名的方式进行值绑定
 * [举例] insert into TABLE (id, name) values (:id, :name)
 * </pre>
 */
public interface IOSqlProvider {

	/**
	 * <pre>
	 * 根据 sqlKey 获取 sql 语句
	 * getSql 是一个转发器式的实现，方法内部可以根据 sqlKey 跳转到不同私有方法以返回不同 sql 语句
	 * </pre>
	 * @param sqlKey 键
	 * @param params 参数集
	 * @return sql 语句
	 */
	public String getSql(String sqlKey, Map<String, Object> params);

}
